/* @author cerimice */
package Persistencia.Definicion;

import Sistema.Configuracion;
import java.io.Serializable;
import java.util.Collection;
import java.util.Date;
import javax.persistence.*;

@Entity
@Table(name="apartado")
@NamedQueries
    ({
    @NamedQuery(name="apartado.lista",          query="SELECT c FROM Apartado c WHERE c.clave LIKE (:valor) ORDER BY c.clave"),
    @NamedQuery(name="apartado.listaCliente",   query="SELECT c FROM Apartado c WHERE c.cliente LIKE (:valor) ORDER BY c.clave")
    })

public class Apartado implements Serializable
    {
    @Id
    @Basic(optional=false)
    @Column(name="clave",nullable=false)
    private String clave;
    
    @Basic(optional=false)
    @Column(name="cliente",nullable=false)
    private String cliente;
    
    @Basic(optional=false)
    @Column(name="fechaInicio",nullable=false)
    @Temporal(javax.persistence.TemporalType.DATE)
    private Date fechaInicio;
    
    @Basic(optional=false)
    @Column(name="fechaTermino",nullable=false)
    @Temporal(javax.persistence.TemporalType.DATE)
    private Date fechaTermino;
    
    @Basic(optional=false)
    @Column(name="descripcion",nullable=false,columnDefinition="text")
    private String descripcion;
    
    @Basic(optional=false)
    @Column(name="marca",nullable=false)
    private String marca;
    
    @Basic(optional=false)
    @Column(name="numeroSerie",nullable=false)
    private String numeroSerie;
    
    @Basic(optional=false)
    @Column(name="montoTotal",nullable=false)
    private float montoTotal;
    
    @ManyToOne(fetch=FetchType.EAGER)
    @JoinColumn(name="cliente",referencedColumnName="clave",insertable=false,updatable=false)
    private Cliente objCliente;
    
    @ManyToOne(fetch=FetchType.EAGER)
    @JoinColumn(name="marca",referencedColumnName="clave",insertable=false,updatable=false)
    private Marca objMarca;
    
    @OneToMany(mappedBy="objApartado",cascade=CascadeType.ALL,fetch= FetchType.EAGER)
    private Collection<SeguimientoApartado> seguimiento;
    
    public Apartado()
        {clave = Configuracion.getFormatoClave().format(new Date());}
    
    public void setClave(String clave)              {this.clave = clave;}
    public void setCliente(String cliente)          {this.cliente = cliente;}
    public void setFechaInicio (Date fechaInicio)   {this.fechaInicio = fechaInicio;}
    public void setFechaTermino (Date fechaTermino) {this.fechaTermino = fechaTermino;}
    public void setDescripcion(String descripcion)  {this.descripcion = descripcion;}
    public void setMarca(String marca)              {this.marca = marca;}
    public void setNumeroSerie(String numeroSerie)  {this.numeroSerie = numeroSerie;}
    public void setMontoTotal(float montoTotal)     {this.montoTotal = montoTotal;}
    
    public String   getClave()          {return clave;}
    public String   getCliente()        {return cliente;}
    public Date     getFechaInicio()    {return fechaInicio;}
    public Date     getFechaTermino()   {return fechaTermino;}
    public String   getDescripcion()    {return descripcion;}
    public String   getMarca()          {return marca;}
    public String   getNumeroSerie()    {return numeroSerie;}
    public float    getMontoTotal()     {return montoTotal;}
    
    public Cliente  getObjCliente()         {return objCliente;}
    public Marca    getObjMarca()           {return objMarca;}
    public Collection<SeguimientoApartado>  getSeguimiento()    {return seguimiento;}
    
    @Override
    public String toString()                {return this.clave;}
    }